1. Field Of The Invention
This invention relates to the field of data storage systems, and specifically to the area of data storage system controllers. The invention provides a new means for managing data errors and media defects on magnetic or optical disk storage systems.
2. Related Art
Data storage systems comprising magnetically encoded disk drives (or "disks") are an important component of most modern day data processing systems. More recently, erasable optical disk drives have been introduced, and are likely to compete with magnetic disks in some areas. Improvements in design and manufacturing technology for both types of drives has led to steadily increasing data capacity, access speeds, and data reliability while at the same time resulting in lower costs per storage unit. The increased performance from these improved disks has necessitated an equal improvement in the controllers which interface these devices with host computers.
Most disk controllers incorporate some form of microprocessor to perform the complex task of controlling the transfer of data to and from a disk. Ideally, a controller should be designed with sufficient flexibility to permit optimization of the interface between a host computer and a disk.
A primary objective of a disk controller is to minimize the access time of data transfers to and from a disk. Disk access times are not only a function of the physical characteristics of each particular disk, but also of the controller's ability to efficiently organize the format of the disk's data storage areas and to optimize movements of the disk's read/write heads. A controller accomplishes these tasks by segmenting a disk into logical components and coordinating data reads and writes so as to minimize disk access times. The performance of any data processing system is increased by reduced disk access times, resulting in faster retrieval and through-put of data to a host computer.
A further objective of a disk controller is to reduce the time required to process data defects that occur on a disk during normal operation. Since these type of defects (known as "organic" or "grown" defects) tend to increase on a disk over time, it is important for the controller to have a logical and efficient method for handling data errors caused by such defects. The greater the capacity for the controller to handle these kinds of errors, the less processing time will be required of the host computer to handle data errors.
Another objective of a disk controller is to minimize the physical space occupied by the storage overhead required to handle data errors or bad media segments while at the same time guaranteeing data integrity. Depending on the performance characteristics desired of the data storage system, this dual objective is usually accomplished by some combination of (1) the disk controller allocating a certain number of spare data storage areas to be distributed throughout the physical area of the disk and (2) error-correcting code techniques. However, by permitting a reduction in the amount of spare blocks required to handle a specified number of errors, a controller can also increase the data capacity of the disk.
Various techniques have been used in the prior art to accomplish the goals and objectives described above. Some earlier techniques simply invalidated an entire track (a collection of data storage segments; a track is usually defined as a set of sectors that physically form a ring on the disk media) if an uncorrectable error was detected within any data block of the track. These techniques are inefficient and unsatisfactory in terms of wasted storage space on the disk. Other methods invalidated only a defective data block. This was more space efficient, but such methods left a corresponding "hole" in the logical address space for the disk. Later methods utilized spare data blocks within each track to permit moving good data from a defective data block to a spare data block on the same track. The blocks were then re-numbered logically to preserve the logical order of the blocks in a particular track. In one such improvement on this concept, error-handling time is reduced by coding bad data blocks with the address information of a replacement data block. These later methods are also still less than optimal because they rely on one or more spare data blocks per track (which decreases data storage capacity), and the controller must re-vector (re-direct) the read/write heads more often to locate replacement data blocks.